/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pa165.portalnahouby.api.serviceinterface;

import cz.muni.fi.pa165.portalnahouby.api.dto.ForestDTO;
import cz.muni.fi.pa165.portalnahouby.api.dto.VisitDTO;
import java.util.List;

/**
 * Interface for visit service
 * 
 * @author Filip Kiss
 */
public interface VisitService {
	/**
     * Creates new visit
     * @param visit 
     * 
     * @throws IllegalArgumentException when visit is null or visit's id is not null
     */
    public void addVisit(VisitDTO visit);
    
    /**
     * Updates visit
     * @param visit 
     * 
     * @throws IllegalArgumentException when visit or visit's id is null
     */
    public void editVisit(VisitDTO visit);
    
    /**
     * Deletes visit
     * @param id 
     * 
     * @throws IllegalArgumentException when visit's id is null
     */
    public void deleteVisit(Long id);
    
    /**
     * Finds visit
     * @param id
     * 
     * @throws IllegalArgumentException when visit's id is null
     */
    public VisitDTO findVisit(Long id);
    
    /**
     * Finds all visits
     * @return list of all visits  
     */
    public List<VisitDTO> getAllVisits();
    
    /**
     * Finds all visits of forest sorted by date
     * @param forest
     * @return list of all visits of forest sorted by date 
     */
    public List<VisitDTO> getListOfForestByDate(ForestDTO forest);
    
    /**
     * Finds all visits of forest sorted by picker
     * @param forest
     * @return list of all visits of forest sorted by picker 
     */
    public List<VisitDTO> getListOfForestByPicker(ForestDTO forest);
    
    /**
     * Finds all visits sorted by forest
     * @param forest
     * @return list of all visits sorted by forest 
     */
    public List<VisitDTO> getListByForest();
}
